package com.hb.trans.mvp.presenter

import androidx.lifecycle.Lifecycle
import androidx.lifecycle.OnLifecycleEvent
import com.basiclib.base.BasePresenter
import com.basiclib.lifecycle.RxLifecycleUtils
import com.basiclib.network.RetryWithDelay
import com.basiclib.network.RxErrorHandler
import com.hb.trans.bean.Base
import com.hb.trans.bean.HomeList
import com.hb.trans.global.ErrorHandleSubscriber
import com.hb.trans.mvp.contract.HomeContract
import com.hb.trans.mvp.model.HomeModel
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import javax.inject.Inject

class HomePresenter @Inject constructor(model: HomeModel, var errorHandler: RxErrorHandler) :
    BasePresenter<HomeContract.View, HomeContract.Model>(model) {

    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    fun getNews() {
        mModel.getNews()
            .subscribeOn(Schedulers.io())
            .retryWhen(RetryWithDelay())
            .observeOn(AndroidSchedulers.mainThread())
            .compose(RxLifecycleUtils.bindToLifecycle(mRootView!!))
            .subscribe(object : ErrorHandleSubscriber<Base<HomeList>>(errorHandler) {
                override fun next(r: Base<HomeList>) {
                    if (r.code == 1) {
                        mRootView?.setUpdata(r.data)
                    } else {
                        mRootView?.showShortToast(r.info ?: "")
                    }
                }
            })
    }

}